﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DAL
{
    public partial class Kardex
    {
        public void Add(dbGestionDataContext _db,
                            int	idInsumo,
                            short anio,
                            short mes,
                            int	idAlmacen,
                            DateTime	fechaUp,
                            decimal	cantidadIng,
                            decimal cantidadSal)
                                    {

                    this.idInsumo = idInsumo;     
                    this.anio=anio;
                    this.mes=mes;
                    this.idAlmacen=idAlmacen;
                    this.fechaUp=fechaUp;
                    this.cantidadIng = cantidadIng;
                    this.cantidadSal = cantidadSal;
                    
                    _db.Kardexes.InsertOnSubmit(this);
                    _db.SubmitChanges();

                    
        }

        public void UpdateIngreso(dbGestionDataContext _db)
        {

            decimal? total = (from a in _db.NotaIngresoItems
                    where a.NotaIngreso.idAlmacen == idAlmacen &
                    a.idInsumo == idInsumo &
                    a.NotaIngreso.fecha.Value.Year == this.anio &
                    a.NotaIngreso.fecha.Value.Month == mes
                    select a).Sum(p=>p.cantidad);

            if (total.HasValue)
            {
                this.fechaUp = DateTime.Now;
                this.cantidadIng = total.Value;
                _db.SubmitChanges();
            }
           
            
        }

        public void UpdateSalida(dbGestionDataContext _db)
        {
            decimal? total = (from a in _db.NotaSalidaItems
                              where a.NotaSalida.idAlmacen == idAlmacen &
                              a.idInsumo == idInsumo &
                              a.NotaSalida.fecha.Year == this.anio &
                              a.NotaSalida.fecha.Month == mes
                              select a).Sum(p => p.cantidad);

            if (total.HasValue)
            {
                this.fechaUp = DateTime.Now;
                this.cantidadSal = total.Value;
                _db.SubmitChanges();
            }
            else
            {
                throw new Exception("el saldo no puede ser cero");
            }

            
        }


    }
}
